package fabricas.estilos;

import builders.BuilderDeEstilo;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import entidades.Estilo;
import entidades.Familia;
import entidades.Telha;
import entidades.TelhaBase;
import entidades.interfaces.IEstilo;

/**
 * Trabalho DAS - 2014/2015
 * @author a21210380, a21190325, a21210392
 */
public class FabricaDeFabricasDeEstilos {
    
    private static final Map<String, BuilderDeEstilo> estilos = (Map<String, BuilderDeEstilo>) Collections.synchronizedMap(new HashMap<String, BuilderDeEstilo>());
    
    public static IFabricasEstilo getFabricaDeEstilo(String nome){
        return new FabricaDeEstilosPorNome(nome, estilos);
    }
    
    public static IFabricasEstilo getFabricaDeEstilo(TelhaBase telha){
        return new FabricaDeEstilosPorTelha(telha);
    }
    
    public static IFabricasEstilo getFabricaDeEstilo(Familia familia){
        return new FabricaDeEstilosComFamilia(familia);
    }
    
    public static IEstilo getEstilo(String nome){
        if(estilos.containsKey(nome)) {
            return estilos.get(nome).construirEstilo();
        }
        return null;
    }
    
    public static Estilo getEstilo(TelhaBase telha){
        return new Estilo(telha);
    }
    
    public static Estilo getEstilo(Familia familia){
        return new Estilo(familia);
    }
    
    /*public static IFabricasEstilo getFabricaDeEstilo(Telha telha){
        fabricaDeEstilosPorNome.setNomePedido(nome);
        return fabricaDeEstilosPorNome;
    }*/
}
